diff --git a/application/config/mimes.php b/application/config/mimes.php
index 206329f..6f73ae0 100644
--- a/application/config/mimes.php
+++ b/application/config/mimes.php
@@ -66,7 +66,7 @@
 				'rpm'	=>	'audio/x-pn-realaudio-plugin',
 				'ra'	=>	'audio/x-realaudio',
 				'rv'	=>	'video/vnd.rn-realvideo',
-				'wav'	=>	'audio/x-wav',
+				'wav'	=>	array('audio/x-wav', 'audio/wave', 'audio/wav'),
 				'bmp'	=>	array('image/bmp', 'image/x-windows-bmp'),
 				'gif'	=>	'image/gif',
 				'jpeg'	=>	array('image/jpeg', 'image/pjpeg'),
@@ -137,4 +137,4 @@
 
 
 /* End of file mimes.php */
-/* Location: ./application/config/mimes.php */
\ No newline at end of file
+/* Location: ./application/config/mimes.php */
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index f3e7cbb..925785d 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -107,6 +107,7 @@
 -  Fixed a bug (#467) - Suppress warnings generated from get_magic_quotes_gpc() (deprecated in PHP 5.4)
 -  Fixed a bug (#484) - First time _csrf_set_hash() is called, hash is never set to the cookie (in Security.php).
 -  Fixed a bug (#60) - Added _file_mime_type() method to the `File Uploading Library <libraries/file_uploading>` in order to fix a possible MIME-type injection.
+-  Fixed a bug (#537) - Support for all wav type in browser.
 
 Version 2.0.3
 =============
diff --git a/user_guide_src/source/database/caching.rst b/user_guide_src/source/database/caching.rst
index 7a195a7..d73120a 100644
--- a/user_guide_src/source/database/caching.rst
+++ b/user_guide_src/source/database/caching.rst
@@ -124,7 +124,17 @@
 Manually enables/disables caching. This can be useful if you want to
 keep certain queries from being cached. Example::
 
-	 // Turn caching on $this->db->cache_on(); $query = $this->db->query("SELECT * FROM mytable");  // Turn caching off for this one query $this->db->cache_off(); $query = $this->db->query("SELECT * FROM members WHERE member_id = '$current_user'");  // Turn caching back on $this->db->cache_on(); $query = $this->db->query("SELECT * FROM another_table");
+	// Turn caching on
+	$this->db->cache_on();
+	$query = $this->db->query("SELECT * FROM mytable");
+	
+	// Turn caching off for this one query
+	$this->db->cache_off();
+	$query = $this->db->query("SELECT * FROM members WHERE member_id = '$current_user'");
+	
+	// Turn caching back on
+	$this->db->cache_on();
+	$query = $this->db->query("SELECT * FROM another_table");
 
 $this->db->cache_delete()
 ==========================
diff --git a/user_guide_src/source/database/call_function.rst b/user_guide_src/source/database/call_function.rst
index bdc5be0..9890fc4 100644
--- a/user_guide_src/source/database/call_function.rst
+++ b/user_guide_src/source/database/call_function.rst
@@ -34,5 +34,6 @@
 
 The result ID can be accessed from within your result object, like this::
 
-	$query = $this->db->query("SOME QUERY");  $query->result_id;
-
+	$query = $this->db->query("SOME QUERY");
+	
+	$query->result_id;
\ No newline at end of file
diff --git a/user_guide_src/source/database/configuration.rst b/user_guide_src/source/database/configuration.rst
index 77b4994..687f0d9 100644
--- a/user_guide_src/source/database/configuration.rst
+++ b/user_guide_src/source/database/configuration.rst
@@ -12,7 +12,21 @@
 The config settings are stored in a multi-dimensional array with this
 prototype::
 
-	$db['default']['hostname'] = "localhost"; $db['default']['username'] = "root"; $db['default']['password'] = ""; $db['default']['database'] = "database_name"; $db['default']['dbdriver'] = "mysql"; $db['default']['dbprefix'] = ""; $db['default']['pconnect'] = TRUE; $db['default']['db_debug'] = FALSE; $db['default']['cache_on'] = FALSE; $db['default']['cachedir'] =  ""; $db['default']['char_set'] = "utf8"; $db['default']['dbcollat'] = "utf8_general_ci"; $db['default']['swap_pre'] = ""; $db['default']['autoinit'] = TRUE; $db['default']['stricton'] = FALSE;
+	$db['default']['hostname'] = "localhost";
+	$db['default']['username'] = "root";
+	$db['default']['password'] = "";
+	$db['default']['database'] = "database_name";
+	$db['default']['dbdriver'] = "mysql";
+	$db['default']['dbprefix'] = "";
+	$db['default']['pconnect'] = TRUE;
+	$db['default']['db_debug'] = FALSE;
+	$db['default']['cache_on'] = FALSE;
+	$db['default']['cachedir'] =  "";
+	$db['default']['char_set'] = "utf8";
+	$db['default']['dbcollat'] = "utf8_general_ci";
+	$db['default']['swap_pre'] = "";
+	$db['default']['autoinit'] = TRUE;
+	$db['default']['stricton'] = FALSE;
 
 The reason we use a multi-dimensional array rather than a more simple
 one is to permit you to optionally store multiple sets of connection
@@ -21,7 +35,21 @@
 connection group for each, then switch between groups as needed. For
 example, to set up a "test" environment you would do this::
 
-	$db['test']['hostname'] = "localhost"; $db['test']['username'] = "root"; $db['test']['password'] = ""; $db['test']['database'] = "database_name"; $db['test']['dbdriver'] = "mysql"; $db['test']['dbprefix'] = ""; $db['test']['pconnect'] = TRUE; $db['test']['db_debug'] = FALSE; $db['test']['cache_on'] = FALSE; $db['test']['cachedir'] =  ""; $db['test']['char_set'] = "utf8"; $db['test']['dbcollat'] = "utf8_general_ci"; $db['test']['swap_pre'] = ""; $db['test']['autoinit'] = TRUE; $db['test']['stricton'] = FALSE;
+	$db['test']['hostname'] = "localhost";
+	$db['test']['username'] = "root";
+	$db['test']['password'] = "";
+	$db['test']['database'] = "database_name";
+	$db['test']['dbdriver'] = "mysql";
+	$db['test']['dbprefix'] = "";
+	$db['test']['pconnect'] = TRUE;
+	$db['test']['db_debug'] = FALSE;
+	$db['test']['cache_on'] = FALSE;
+	$db['test']['cachedir'] =  "";
+	$db['test']['char_set'] = "utf8";
+	$db['test']['dbcollat'] = "utf8_general_ci";
+	$db['test']['swap_pre'] = "";
+	$db['test']['autoinit'] = TRUE;
+	$db['test']['stricton'] = FALSE;
 
 Then, to globally tell the system to use that group you would set this
 variable located in the config file::
@@ -51,54 +79,45 @@
 Explanation of Values:
 ----------------------
 
--  **hostname** - The hostname of your database server. Often this is
-	"localhost".
--  **username** - The username used to connect to the database.
--  **password** - The password used to connect to the database.
--  **database** - The name of the database you want to connect to.
--  **dbdriver** - The database type. ie: mysql, postgres, odbc, etc.
-	Must be specified in lower case.
--  **dbprefix** - An optional table prefix which will added to the table
-	name when running :doc:`Active Record <active_record>` queries. This
-	permits multiple CodeIgniter installations to share one database.
--  **pconnect** - TRUE/FALSE (boolean) - Whether to use a persistent
-	connection.
--  **db_debug** - TRUE/FALSE (boolean) - Whether database errors should
-	be displayed.
--  **cache_on** - TRUE/FALSE (boolean) - Whether database query caching
-	is enabled, see also :doc:`Database Caching Class <caching>`.
--  **cachedir** - The absolute server path to your database query cache
-	directory.
--  **char_set** - The character set used in communicating with the
-	database.
--  **dbcollat** - The character collation used in communicating with the
-	database.
+======================  ==================================================================================================
+ Name Config             Description
+======================  ==================================================================================================
+**hostname** 		The hostname of your database server. Often this is "localhost".
+**username**		The username used to connect to the database.
+**password**		The password used to connect to the database.
+**database**		The name of the database you want to connect to.
+**dbdriver**		The database type. ie: mysql, postgres, odbc, etc. Must be specified in lower case.
+**dbprefix**		An optional table prefix which will added to the table name when running :doc:
+			`Active Record <active_record>` queries. This permits multiple CodeIgniter installations
+			to share one database.
+**pconnect**		TRUE/FALSE (boolean) - Whether to use a persistent connection.
+**db_debug**		TRUE/FALSE (boolean) - Whether database errors should be displayed.
+**cache_on**		TRUE/FALSE (boolean) - Whether database query caching is enabled,
+			see also :doc:`Database Caching Class <caching>`.
+**cachedir**		The absolute server path to your database query cache directory.
+**char_set**		The character set used in communicating with the database.
+**dbcollat**		The character collation used in communicating with the database
 
-.. note:: For MySQL and MySQLi databases, this setting is only used
-	as a backup if your server is running PHP < 5.2.3 or MySQL < 5.0.7
-	(and in table creation queries made with DB Forge). There is an
-	incompatibility in PHP with mysql_real_escape_string() which can
-	make your site vulnerable to SQL injection if you are using a
-	multi-byte character set and are running versions lower than these.
-	Sites using Latin-1 or UTF-8 database character set and collation are
-	unaffected.
+			.. note:: For MySQL and MySQLi databases, this setting is only used
+				as a backup if your server is running PHP < 5.2.3 or MySQL < 5.0.7
+				(and in table creation queries made with DB Forge). There is an
+				incompatibility in PHP with mysql_real_escape_string() which can
+				make your site vulnerable to SQL injection if you are using a
+				multi-byte character set and are running versions lower than these.
+				Sites using Latin-1 or UTF-8 database character set and collation are
+				unaffected.
 
--  **swap_pre** - A default table prefix that should be swapped with
-	dbprefix. This is useful for distributed applications where you might
-	run manually written queries, and need the prefix to still be
-	customizable by the end user.
--  **autoinit** - Whether or not to automatically connect to the
-	database when the library loads. If set to false, the connection will
-	take place prior to executing the first query.
--  **stricton** - TRUE/FALSE (boolean) - Whether to force "Strict Mode"
-	connections, good for ensuring strict SQL while developing an
-	application.
--  **port** - The database port number. To use this value you have to
-	add a line to the database config
-	array.::
-
-	$db['default']['port'] =  5432;
-
+**swap_pre**		A default table prefix that should be swapped with dbprefix. This is useful for distributed
+			applications where you might run manually written queries, and need the prefix to still be
+			customizable by the end user.
+**autoinit**		Whether or not to automatically connect to the database when the library loads. If set to false,
+			the connection will take place prior to executing the first query.
+**stricton**		TRUE/FALSE (boolean) - Whether to force "Strict Mode" connections, good for ensuring strict SQL
+			while developing an application.
+**port**		The database port number. To use this value you have to add a line to the database config array.
+			::
+				$db['default']['port'] =  5432;
+======================  ==================================================================================================
 
 .. note:: Depending on what database platform you are using (MySQL,
 	Postgres, etc.) not all values will be needed. For example, when using
diff --git a/user_guide_src/source/database/connecting.rst b/user_guide_src/source/database/connecting.rst
index 6c54943..64adc30 100644
--- a/user_guide_src/source/database/connecting.rst
+++ b/user_guide_src/source/database/connecting.rst
@@ -92,19 +92,20 @@
 By setting the second parameter to TRUE (boolean) the function will
 return the database object.
 
-When you connect this way, you will use your object name to issue
-commands rather than the syntax used throughout this guide. In other
-words, rather than issuing commands with:
-
-$this->db->query();
-$this->db->result();
-etc...
-
-You will instead use:
-
-$DB1->query();
-$DB1->result();
-etc...
+.. note:: When you connect this way, you will use your object name to issue
+	commands rather than the syntax used throughout this guide. In other
+	words, rather than issuing commands with:
+	
+	|
+	| $this->db->query();
+	| $this->db->result();
+	| etc...
+	|
+	| You will instead use:
+	|
+	| $DB1->query();
+	| $DB1->result();
+	| etc...
 
 Reconnecting / Keeping the Connection Alive
 ===========================================
diff --git a/user_guide_src/source/database/examples.rst b/user_guide_src/source/database/examples.rst
index bd2cc4d..d1cd488 100644
--- a/user_guide_src/source/database/examples.rst
+++ b/user_guide_src/source/database/examples.rst
@@ -24,7 +24,16 @@
 
 ::
 
-	$query = $this->db->query('SELECT name, title, email FROM my_table');  foreach ($query->result() as $row) {     echo $row->title;     echo $row->name;     echo $row->email; }  echo 'Total Results: ' . $query->num_rows();
+	$query = $this->db->query('SELECT name, title, email FROM my_table');
+	
+	foreach ($query->result() as $row)
+	{
+		echo $row->title;
+		echo $row->name;
+		echo $row->email;
+	}
+	
+	echo 'Total Results: ' . $query->num_rows();
 
 The above result() function returns an array of **objects**. Example:
 $row->title
@@ -34,7 +43,14 @@
 
 ::
 
-	$query = $this->db->query('SELECT name, title, email FROM my_table');  foreach ($query->result_array() as $row) {     echo $row['title'];     echo $row['name'];     echo $row['email']; }
+	$query = $this->db->query('SELECT name, title, email FROM my_table');
+	
+	foreach ($query->result_array() as $row)
+	{
+		echo $row['title'];
+		echo $row['name'];
+		echo $row['email'];
+	}
 
 The above result_array() function returns an array of standard array
 indexes. Example: $row['title']
@@ -45,14 +61,25 @@
 If you run queries that might **not** produce a result, you are
 encouraged to test for a result first using the num_rows() function::
 
-	 $query = $this->db->query("YOUR QUERY");  if ($query->num_rows() > 0) {    foreach ($query->result() as $row)    {       echo $row->title;       echo $row->name;       echo $row->body;    } }
+	$query = $this->db->query("YOUR QUERY");
+	if ($query->num_rows() > 0)
+	{
+		foreach ($query->result() as $row)
+		{
+			echo $row->title;
+			echo $row->name;
+			echo $row->body;
+		}
+	}
 
 Standard Query With Single Result
 =================================
 
 ::
 
-	$query = $this->db->query('SELECT name FROM my_table LIMIT 1');  $row = $query->row(); echo $row->name;
+	$query = $this->db->query('SELECT name FROM my_table LIMIT 1'); 
+	$row = $query->row();
+	echo $row->name;
 
 The above row() function returns an **object**. Example: $row->name
 
@@ -61,7 +88,9 @@
 
 ::
 
-	$query = $this->db->query('SELECT name FROM my_table LIMIT 1');  $row = $query->row_array(); echo $row['name'];
+	$query = $this->db->query('SELECT name FROM my_table LIMIT 1');
+	$row = $query->row_array();
+	echo $row['name'];
 
 The above row_array() function returns an **array**. Example:
 $row['name']
@@ -71,7 +100,9 @@
 
 ::
 
-	 $sql = "INSERT INTO mytable (title, name)          VALUES (".$this->db->escape($title).", ".$this->db->escape($name).")";  $this->db->query($sql);  echo $this->db->affected_rows();
+	$sql = "INSERT INTO mytable (title, name) VALUES (".$this->db->escape($title).", ".$this->db->escape($name).")";
+	$this->db->query($sql);
+	echo $this->db->affected_rows();
 
 Active Record Query
 ===================
@@ -79,7 +110,12 @@
 The :doc:`Active Record Pattern <active_record>` gives you a simplified
 means of retrieving data::
 
-	 $query = $this->db->get('table_name');  foreach ($query->result() as $row) {     echo $row->title; }
+	$query = $this->db->get('table_name');
+	
+	foreach ($query->result() as $row)
+	{
+		echo $row->title;
+	}
 
 The above get() function retrieves all the results from the supplied
 table. The :doc:`Active Record <active_record>` class contains a full
@@ -90,5 +126,11 @@
 
 ::
 
-	 $data = array(                'title' => $title,                'name' => $name,                'date' => $date             );  $this->db->insert('mytable', $data);  // Produces: INSERT INTO mytable (title, name, date) VALUES ('{$title}', '{$name}', '{$date}')
+	$data = array(
+		'title' => $title,
+		'name' => $name,
+		'date' => $date
+	);
+	
+	$this->db->insert('mytable', $data);  // Produces: INSERT INTO mytable (title, name, date) VALUES ('{$title}', '{$name}', '{$date}')
 
diff --git a/user_guide_src/source/database/fields.rst b/user_guide_src/source/database/fields.rst
index 07730f5..b706ace 100644
--- a/user_guide_src/source/database/fields.rst
+++ b/user_guide_src/source/database/fields.rst
@@ -11,12 +11,22 @@
 1. You can supply the table name and call it from the $this->db->
 object::
 
-	 $fields = $this->db->list_fields('table_name');  foreach ($fields as $field) {    echo $field; }
+	$fields = $this->db->list_fields('table_name');
+	
+	foreach ($fields as $field)
+	{
+		echo $field;
+	}
 
 2. You can gather the field names associated with any query you run by
 calling the function from your query result object::
 
-	 $query = $this->db->query('SELECT * FROM some_table');   foreach ($query->list_fields() as $field) {    echo $field; }
+	$query = $this->db->query('SELECT * FROM some_table');
+	
+	foreach ($query->list_fields() as $field)
+	{
+		echo $field;
+	}
 
 $this->db->field_exists()
 ==========================
@@ -24,11 +34,14 @@
 Sometimes it's helpful to know whether a particular field exists before
 performing an action. Returns a boolean TRUE/FALSE. Usage example::
 
-	 if ($this->db->field_exists('field_name', 'table_name')) {    // some code... }
+	if ($this->db->field_exists('field_name', 'table_name'))
+	{
+		// some code...
+	}
 
-Note: Replace *field_name* with the name of the column you are looking
-for, and replace *table_name* with the name of the table you are
-looking for.
+.. note:: Replace *field_name* with the name of the column you are looking
+	for, and replace *table_name* with the name of the table you are
+	looking for.
 
 $this->db->field_data()
 ========================
@@ -38,16 +51,25 @@
 Sometimes it's helpful to gather the field names or other metadata, like
 the column type, max length, etc.
 
-Note: Not all databases provide meta-data.
+.. note:: Not all databases provide meta-data.
 
 Usage example::
 
-	 $fields = $this->db->field_data('table_name');  foreach ($fields as $field) {    echo $field->name;    echo $field->type;    echo $field->max_length;    echo $field->primary_key; }
+	$fields = $this->db->field_data('table_name');
+	
+	foreach ($fields as $field)
+	{
+		echo $field->name;
+		echo $field->type;
+		echo $field->max_length;
+		echo $field->primary_key;
+	}
 
 If you have run a query already you can use the result object instead of
 supplying the table name::
 
-	 $query = $this->db->query("YOUR QUERY"); $fields = $query->field_data();
+	$query = $this->db->query("YOUR QUERY");
+	$fields = $query->field_data();
 
 The following data is available from this function if supported by your
 database:
@@ -55,5 +77,4 @@
 -  name - column name
 -  max_length - maximum length of the column
 -  primary_key - 1 if the column is a primary key
--  type - the type of the column
-
+-  type - the type of the column
\ No newline at end of file
diff --git a/user_guide_src/source/database/forge.rst b/user_guide_src/source/database/forge.rst
index ee03324..bf17e29 100644
--- a/user_guide_src/source/database/forge.rst
+++ b/user_guide_src/source/database/forge.rst
@@ -29,7 +29,10 @@
 Permits you to create the database specified in the first parameter.
 Returns TRUE/FALSE based on success or failure::
 
-	if ($this->dbforge->create_database('my_db')) {     echo 'Database created!'; }
+	if ($this->dbforge->create_database('my_db'))
+	{
+		echo 'Database created!';
+	}
 
 $this->dbforge->drop_database('db_name')
 ==========================================
@@ -37,7 +40,10 @@
 Permits you to drop the database specified in the first parameter.
 Returns TRUE/FALSE based on success or failure::
 
-	if ($this->dbforge->drop_database('my_db')) {     echo 'Database deleted!'; }
+	if ($this->dbforge->drop_database('my_db'))
+	{
+		echo 'Database deleted!';
+	}
 
 ****************************
 Creating and Dropping Tables
@@ -57,7 +63,13 @@
 
 ::
 
-	$fields = array(                         'users' => array(                                                      'type' => 'VARCHAR',                                                      'constraint' => '100',                                               ),                     );      // will translate to "users VARCHAR(100)" when the field is added.
+	$fields = array(
+		'users' => array(
+			'type' => 'VARCHAR',
+			'constraint' => '100',
+		),
+	);
+	// will translate to "users VARCHAR(100)" when the field is added.
 
 
 Additionally, the following key/values can be used:
@@ -72,7 +84,27 @@
 
 ::
 
-	$fields = array(                             'blog_id' => array(                                                      'type' => 'INT',                                                      'constraint' => 5,                                                       'unsigned' => TRUE,                                                      'auto_increment' => TRUE                                               ),                             'blog_title' => array(                                                  'type' => 'VARCHAR',                                                  'constraint' => '100',                                           ),                         'blog_author' => array(                                                  'type' =>'VARCHAR',                                                  'constraint' => '100',                                                  'default' => 'King of Town',                                           ),                         'blog_description' => array(                                                  'type' => 'TEXT',                                                  'null' => TRUE,                                           ),                 );
+	$fields = array(
+		'blog_id' => array(
+			'type' => 'INT',
+			'constraint' => 5,
+			'unsigned' => TRUE,
+			'auto_increment' => TRUE
+		),
+		'blog_title' => array(
+			'type' => 'VARCHAR',
+			'constraint' => '100',
+		),
+		'blog_author' => array(
+			'type' =>'VARCHAR',
+			'constraint' => '100',
+			'default' => 'King of Town',
+		),
+		'blog_description' => array(
+			'type' => 'TEXT',
+			'null' => TRUE,
+		),
+	);
 
 
 After the fields have been defined, they can be added using
@@ -95,7 +127,7 @@
 	$this->dbforge->add_field("label varchar(100) NOT NULL DEFAULT 'default label'");
 
 
-Note: Multiple calls to add_field() are cumulative.
+.. note:: Multiple calls to add_field() are cumulative.
 
 Creating an id field
 --------------------
@@ -106,7 +138,8 @@
 
 ::
 
-	$this->dbforge->add_field('id');     // gives id INT(9) NOT NULL AUTO_INCREMENT
+	$this->dbforge->add_field('id');
+	// gives id INT(9) NOT NULL AUTO_INCREMENT
 
 
 Adding Keys
@@ -122,7 +155,18 @@
 
 ::
 
-	$this->dbforge->add_key('blog_id', TRUE);     // gives PRIMARY KEY `blog_id` (`blog_id`)          $this->dbforge->add_key('blog_id', TRUE);     $this->dbforge->add_key('site_id', TRUE);     // gives PRIMARY KEY `blog_id_site_id` (`blog_id`, `site_id`)          $this->dbforge->add_key('blog_name');     // gives KEY `blog_name` (`blog_name`)          $this->dbforge->add_key(array('blog_name', 'blog_label'));     // gives KEY `blog_name_blog_label` (`blog_name`, `blog_label`)
+	$this->dbforge->add_key('blog_id', TRUE);
+	// gives PRIMARY KEY `blog_id` (`blog_id`)
+	
+	$this->dbforge->add_key('blog_id', TRUE);
+	$this->dbforge->add_key('site_id', TRUE);
+	// gives PRIMARY KEY `blog_id_site_id` (`blog_id`, `site_id`)
+	
+	$this->dbforge->add_key('blog_name');
+	// gives KEY `blog_name` (`blog_name`)
+	
+	$this->dbforge->add_key(array('blog_name', 'blog_label'));
+	// gives KEY `blog_name_blog_label` (`blog_name`, `blog_label`)
 
 
 Creating a table
@@ -133,7 +177,8 @@
 
 ::
 
-	$this->dbforge->create_table('table_name'); // gives CREATE TABLE table_name
+	$this->dbforge->create_table('table_name');
+	// gives CREATE TABLE table_name
 
 
 An optional second parameter set to TRUE adds an "IF NOT EXISTS" clause
@@ -141,7 +186,8 @@
 
 ::
 
-	$this->dbforge->create_table('table_name', TRUE); // gives CREATE TABLE IF NOT EXISTS table_name
+	$this->dbforge->create_table('table_name', TRUE);
+	// gives CREATE TABLE IF NOT EXISTS table_name
 
 
 Dropping a table
@@ -151,7 +197,8 @@
 
 ::
 
-	$this->dbforge->drop_table('table_name');     // gives DROP TABLE IF EXISTS  table_name
+	$this->dbforge->drop_table('table_name');
+	// gives DROP TABLE IF EXISTS  table_name
 
 
 Renaming a table
@@ -161,7 +208,8 @@
 
 ::
 
-	$this->dbforge->rename_table('old_table_name', 'new_table_name');     // gives ALTER TABLE old_table_name RENAME TO new_table_name
+	$this->dbforge->rename_table('old_table_name', 'new_table_name');
+	// gives ALTER TABLE old_table_name RENAME TO new_table_name
 
 
 ****************
@@ -177,7 +225,11 @@
 
 ::
 
-	$fields = array(                             'preferences' => array('type' => 'TEXT') ); $this->dbforge->add_column('table_name', $fields);  // gives ALTER TABLE table_name ADD     preferences TEXT
+	$fields = array(
+		'preferences' => array('type' => 'TEXT')
+	);
+	$this->dbforge->add_column('table_name', $fields); 
+	// gives ALTER TABLE table_name ADD preferences TEXT
 
 An optional third parameter can be used to specify which existing column
 to add the new column after.
@@ -206,7 +258,11 @@
 
 ::
 
-	$fields = array(                         'old_name' => array(                                                          'name' => 'new_name',                                                          'type' => 'TEXT',                                                 ), ); $this->dbforge->modify_column('table_name', $fields);          // gives ALTER TABLE table_name CHANGE      old_name new_name TEXT 
-
-
-
+	$fields = array(
+		'old_name' => array(
+			'name' => 'new_name',
+			'type' => 'TEXT',
+		),
+	);
+	$this->dbforge->modify_column('table_name', $fields);
+	// gives ALTER TABLE table_name CHANGE old_name new_name TEXT
\ No newline at end of file
diff --git a/user_guide_src/source/database/helpers.rst b/user_guide_src/source/database/helpers.rst
index b0a5ce9..7ea19e9 100644
--- a/user_guide_src/source/database/helpers.rst
+++ b/user_guide_src/source/database/helpers.rst
@@ -28,7 +28,9 @@
 Permits you to determine the number of rows in a particular table.
 Submit the table name in the first parameter. Example::
 
-	echo $this->db->count_all('my_table');  // Produces an integer, like 25
+	echo $this->db->count_all('my_table');
+	
+	// Produces an integer, like 25
 
 $this->db->platform()
 =====================
@@ -51,7 +53,9 @@
 Returns the last query that was run (the query string, not the result).
 Example::
 
-	$str = $this->db->last_query();  // Produces:  SELECT * FROM sometable....
+	$str = $this->db->last_query();
+	
+	// Produces:  SELECT * FROM sometable....
 
 The following two functions help simplify the process of writing
 database INSERTs and UPDATEs.
@@ -62,14 +66,16 @@
 This function simplifies the process of writing database inserts. It
 returns a correctly formatted SQL insert string. Example::
 
-	$data = array('name' => $name, 'email' => $email, 'url' => $url);  $str = $this->db->insert_string('table_name', $data);
+	$data = array('name' => $name, 'email' => $email, 'url' => $url);
+	
+	$str = $this->db->insert_string('table_name', $data);
 
 The first parameter is the table name, the second is an associative
 array with the data to be inserted. The above example produces::
 
 	INSERT INTO table_name (name, email, url) VALUES ('Rick', 'rick@example.com', 'example.com')
 
-Note: Values are automatically escaped, producing safer queries.
+.. note:: Values are automatically escaped, producing safer queries.
 
 $this->db->update_string();
 ============================
@@ -77,7 +83,11 @@
 This function simplifies the process of writing database updates. It
 returns a correctly formatted SQL update string. Example::
 
-	$data = array('name' => $name, 'email' => $email, 'url' => $url);  $where = "author_id = 1 AND status = 'active'";  $str = $this->db->update_string('table_name', $data, $where);
+	$data = array('name' => $name, 'email' => $email, 'url' => $url);
+	
+	$where = "author_id = 1 AND status = 'active'";
+	
+	$str = $this->db->update_string('table_name', $data, $where);
 
 The first parameter is the table name, the second is an associative
 array with the data to be updated, and the third parameter is the
@@ -85,4 +95,4 @@
 
 	 UPDATE table_name SET name = 'Rick', email = 'rick@example.com', url = 'example.com' WHERE author_id = 1 AND status = 'active'
 
-Note: Values are automatically escaped, producing safer queries.
+.. note:: Values are automatically escaped, producing safer queries.
diff --git a/user_guide_src/source/database/queries.rst b/user_guide_src/source/database/queries.rst
index cfc42c4..971d5d6 100644
--- a/user_guide_src/source/database/queries.rst
+++ b/user_guide_src/source/database/queries.rst
@@ -41,7 +41,8 @@
 If for any reason you would like to change the prefix programatically
 without needing to create a new connection, you can use this method::
 
-	$this->db->set_dbprefix('newprefix'); $this->db->dbprefix('tablename'); // outputs newprefix_tablename
+	$this->db->set_dbprefix('newprefix');
+	$this->db->dbprefix('tablename'); // outputs newprefix_tablename
 
 
 **********************
@@ -101,7 +102,8 @@
 Bindings enable you to simplify your query syntax by letting the system
 put the queries together for you. Consider the following example::
 
-	 $sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";  $this->db->query($sql, array(3, 'live', 'Rick'));
+	$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
+	$this->db->query($sql, array(3, 'live', 'Rick'));
 
 The question marks in the query are automatically replaced with the
 values in the array in the second parameter of the query function.
diff --git a/user_guide_src/source/database/results.rst b/user_guide_src/source/database/results.rst
index a85b89b..4f93c79 100644
--- a/user_guide_src/source/database/results.rst
+++ b/user_guide_src/source/database/results.rst
@@ -11,14 +11,31 @@
 **an empty array** on failure. Typically you'll use this in a foreach
 loop, like this::
 
-	     $query = $this->db->query("YOUR QUERY");          foreach ($query->result() as $row)     {        echo $row->title;        echo $row->name;        echo $row->body;     }
+	$query = $this->db->query("YOUR QUERY");
+	
+	foreach ($query->result() as $row)
+	{
+		echo $row->title;
+		echo $row->name;
+		echo $row->body;
+	}
 
 The above function is an alias of result_object().
 
 If you run queries that might **not** produce a result, you are
 encouraged to test the result first::
 
-	     $query = $this->db->query("YOUR QUERY");          if ($query->num_rows() > 0)     {        foreach ($query->result() as $row)        {           echo $row->title;           echo $row->name;           echo $row->body;        }     }     
+	$query = $this->db->query("YOUR QUERY");
+	
+	if ($query->num_rows() > 0)
+	{
+		foreach ($query->result() as $row)
+		{
+			echo $row->title;
+			echo $row->name;
+			echo $row->body;
+		}
+	}
 
 You can also pass a string to result() which represents a class to
 instantiate for each result object (note: this class must be loaded)
@@ -40,7 +57,14 @@
 array when no result is produced. Typically you'll use this in a foreach
 loop, like this::
 
-	     $query = $this->db->query("YOUR QUERY");          foreach ($query->result_array() as $row)     {        echo $row['title'];        echo $row['name'];        echo $row['body'];     }
+	$query = $this->db->query("YOUR QUERY");
+	
+	foreach ($query->result_array() as $row)
+	{
+		echo $row['title'];
+		echo $row['name'];
+		echo $row['body'];
+	}
 
 row()
 =====
@@ -49,7 +73,16 @@
 one row, it returns only the first row. The result is returned as an
 **object**. Here's a usage example::
 
-	     $query = $this->db->query("YOUR QUERY");          if ($query->num_rows() > 0)     {        $row = $query->row();             echo $row->title;        echo $row->name;        echo $row->body;     }     
+	$query = $this->db->query("YOUR QUERY");
+	
+	if ($query->num_rows() > 0)
+	{
+		$row = $query->row();
+		
+		echo $row->title;
+		echo $row->name;
+		echo $row->body;
+	}
 
 If you want a specific row returned you can submit the row number as a
 digit in the first parameter::
@@ -59,7 +92,11 @@
 You can also add a second String parameter, which is the name of a class
 to instantiate the row with::
 
-	     $query = $this->db->query("SELECT * FROM users LIMIT 1;");          $query->row(0, 'User')     echo $row->name; // call attributes     echo $row->reverse_name(); // or methods defined on the 'User' class     
+	$query = $this->db->query("SELECT * FROM users LIMIT 1;");
+	$query->row(0, 'User');
+	
+	echo $row->name; // call attributes
+	echo $row->reverse_name(); // or methods defined on the 'User' class
 
 row_array()
 ============
@@ -67,7 +104,16 @@
 Identical to the above row() function, except it returns an array.
 Example::
 
-	     $query = $this->db->query("YOUR QUERY");          if ($query->num_rows() > 0)     {        $row = $query->row_array();             echo $row['title'];        echo $row['name'];        echo $row['body'];     }     
+	$query = $this->db->query("YOUR QUERY");
+	
+	if ($query->num_rows() > 0)
+	{
+		$row = $query->row_array();
+		
+		echo $row['title'];
+		echo $row['name'];
+		echo $row['body'];
+	}
 
 If you want a specific row returned you can submit the row number as a
 digit in the first parameter::
@@ -77,18 +123,18 @@
 In addition, you can walk forward/backwards/first/last through your
 results using these variations:
 
-**$row = $query->first_row()**
- **$row = $query->last_row()**
- **$row = $query->next_row()**
- **$row = $query->previous_row()**
+	| **$row = $query->first_row()**
+	| **$row = $query->last_row()**
+	| **$row = $query->next_row()**
+	| **$row = $query->previous_row()**
 
 By default they return an object unless you put the word "array" in the
 parameter:
 
-**$row = $query->first_row('array')**
- **$row = $query->last_row('array')**
- **$row = $query->next_row('array')**
- **$row = $query->previous_row('array')**
+	| **$row = $query->first_row('array')**
+	| **$row = $query->last_row('array')**
+	| **$row = $query->next_row('array')**
+	| **$row = $query->previous_row('array')**
 
 ***********************
 Result Helper Functions
@@ -100,7 +146,9 @@
 The number of rows returned by the query. Note: In this example, $query
 is the variable that the query result object is assigned to::
 
-	$query = $this->db->query('SELECT * FROM my_table'); echo $query->num_rows();
+	$query = $this->db->query('SELECT * FROM my_table');
+	
+	echo $query->num_rows();
 
 $query->num_fields()
 =====================
@@ -108,7 +156,9 @@
 The number of FIELDS (columns) returned by the query. Make sure to call
 the function using your query result object::
 
-	$query = $this->db->query('SELECT * FROM my_table'); echo $query->num_fields();
+	$query = $this->db->query('SELECT * FROM my_table');
+	
+	echo $query->num_fields();
 
 $query->free_result()
 ======================
@@ -120,5 +170,17 @@
 result has been generated in order to cut down on memory consumptions.
 Example::
 
-	$query = $this->db->query('SELECT title FROM my_table'); foreach ($query->result() as $row) {    echo $row->title; } $query->free_result();  // The $query result object will no longer be available  $query2 = $this->db->query('SELECT name FROM some_table'); $row = $query2->row(); echo $row->name; $query2->free_result();  // The $query2 result object will no longer be available
+	$query = $this->db->query('SELECT title FROM my_table');
+	
+	foreach ($query->result() as $row)
+	{
+		echo $row->title;
+	}
+	$query->free_result();  // The $query result object will no longer be available
+
+	$query2 = $this->db->query('SELECT name FROM some_table');
+
+	$row = $query2->row();
+	echo $row->name;
+	$query2->free_result();// The $query2 result object will no longer be available
 
diff --git a/user_guide_src/source/database/table_data.rst b/user_guide_src/source/database/table_data.rst
index ec7dbbf..744a051 100644
--- a/user_guide_src/source/database/table_data.rst
+++ b/user_guide_src/source/database/table_data.rst
@@ -10,7 +10,12 @@
 Returns an array containing the names of all the tables in the database
 you are currently connected to. Example::
 
-	$tables = $this->db->list_tables();  foreach ($tables as $table) {    echo $table; }
+	$tables = $this->db->list_tables();
+	
+	foreach ($tables as $table)
+	{
+		echo $table;
+	}
 
 $this->db->table_exists();
 ===========================
@@ -18,7 +23,9 @@
 Sometimes it's helpful to know whether a particular table exists before
 running an operation on it. Returns a boolean TRUE/FALSE. Usage example::
 
-	 if ($this->db->table_exists('table_name')) {    // some code... }
+	if ($this->db->table_exists('table_name'))
+	{
+		// some code...
+	}
 
-Note: Replace *table_name* with the name of the table you are looking
-for.
+.. note:: Replace *table_name* with the name of the table you are looking for.
diff --git a/user_guide_src/source/database/transactions.rst b/user_guide_src/source/database/transactions.rst
index e82210b..e9190e5 100644
--- a/user_guide_src/source/database/transactions.rst
+++ b/user_guide_src/source/database/transactions.rst
@@ -35,7 +35,11 @@
 $this->db->trans_start() and $this->db->trans_complete() functions as
 follows::
 
-	 $this->db->trans_start(); $this->db->query('AN SQL QUERY...'); $this->db->query('ANOTHER QUERY...'); $this->db->query('AND YET ANOTHER QUERY...'); $this->db->trans_complete();
+	$this->db->trans_start();
+	$this->db->query('AN SQL QUERY...');
+	$this->db->query('ANOTHER QUERY...');
+	$this->db->query('AND YET ANOTHER QUERY...');
+	$this->db->trans_complete();
 
 You can run as many queries as you want between the start/complete
 functions and they will all be committed or rolled back based on success
@@ -61,7 +65,15 @@
 you'll see a standard error message if the commit was unsuccessful. If
 debugging is turned off, you can manage your own errors like this::
 
-	 $this->db->trans_start(); $this->db->query('AN SQL QUERY...'); $this->db->query('ANOTHER QUERY...'); $this->db->trans_complete();  if ($this->db->trans_status() === FALSE) {     // generate an error... or use the log_message() function to log your error }
+	$this->db->trans_start();
+	$this->db->query('AN SQL QUERY...');
+	$this->db->query('ANOTHER QUERY...');
+	$this->db->trans_complete();
+	
+	if ($this->db->trans_status() === FALSE)
+	{
+		// generate an error... or use the log_message() function to log your error
+	}
 
 Enabling Transactions
 =====================
@@ -70,7 +82,11 @@
 $this->db->trans_start(). If you would like to disable transactions you
 can do so using $this->db->trans_off()::
 
-	 $this->db->trans_off()  $this->db->trans_start(); $this->db->query('AN SQL QUERY...'); $this->db->trans_complete();
+	$this->db->trans_off();
+	
+	$this->db->trans_start();
+	$this->db->query('AN SQL QUERY...');
+	$this->db->trans_complete();
 
 When transactions are disabled, your queries will be auto-commited, just
 as they are when running queries without transactions.
@@ -83,14 +99,29 @@
 a valid result. To use test mode simply set the first parameter in the
 $this->db->trans_start() function to TRUE::
 
-	 $this->db->trans_start(TRUE); // Query will be rolled back $this->db->query('AN SQL QUERY...'); $this->db->trans_complete();
+	$this->db->trans_start(TRUE); // Query will be rolled back
+	$this->db->query('AN SQL QUERY...');
+	$this->db->trans_complete();
 
 Running Transactions Manually
 =============================
 
 If you would like to run transactions manually you can do so as follows::
 
-	 $this->db->trans_begin();  $this->db->query('AN SQL QUERY...'); $this->db->query('ANOTHER QUERY...'); $this->db->query('AND YET ANOTHER QUERY...');    if ($this->db->trans_status() === FALSE) {     $this->db->trans_rollback(); } else {     $this->db->trans_commit(); }
+	$this->db->trans_begin();
+	
+	$this->db->query('AN SQL QUERY...');
+	$this->db->query('ANOTHER QUERY...');
+	$this->db->query('AND YET ANOTHER QUERY...');
+	
+	if ($this->db->trans_status() === FALSE)
+	{
+		$this->db->trans_rollback();
+	}
+	else
+	{
+		$this->db->trans_commit();
+	}
 
 .. note:: Make sure to use $this->db->trans_begin() when running manual
 	transactions, **NOT** $this->db->trans_start().
diff --git a/user_guide_src/source/database/utilities.rst b/user_guide_src/source/database/utilities.rst
index 7dcf1df..b092010 100644
--- a/user_guide_src/source/database/utilities.rst
+++ b/user_guide_src/source/database/utilities.rst
@@ -32,7 +32,12 @@
 
 Returns an array of database names::
 
-	 $dbs = $this->dbutil->list_databases();  foreach ($dbs as $db) {     echo $db; }
+	$dbs = $this->dbutil->list_databases();
+	
+	foreach ($dbs as $db)
+	{
+ 		echo $db;
+	}
 
 $this->dbutil->database_exists();
 ==================================
@@ -40,7 +45,10 @@
 Sometimes it's helpful to know whether a particular database exists.
 Returns a boolean TRUE/FALSE. Usage example::
 
-	 if ($this->dbutil->database_exists('database_name')) {    // some code... }
+	if ($this->dbutil->database_exists('database_name'))
+	{
+		// some code...
+	}
 
 Note: Replace *database_name* with the name of the table you are
 looking for. This function is case sensitive.
@@ -53,7 +61,10 @@
 Permits you to optimize a table using the table name specified in the
 first parameter. Returns TRUE/FALSE based on success or failure::
 
-	 if ($this->dbutil->optimize_table('table_name')) {     echo 'Success!'; }
+	if ($this->dbutil->optimize_table('table_name'))
+	{
+		echo 'Success!';
+	}
 
 .. note:: Not all database platforms support table optimization.
 
@@ -65,7 +76,10 @@
 Permits you to repair a table using the table name specified in the
 first parameter. Returns TRUE/FALSE based on success or failure::
 
-	 if ($this->dbutil->repair_table('table_name')) {     echo 'Success!'; }
+	if ($this->dbutil->repair_table('table_name'))
+	{
+		echo 'Success!';
+	}
 
 .. note:: Not all database platforms support table repairs.
 
@@ -80,7 +94,12 @@
 
 ::
 
-	 $result = $this->dbutil->optimize_database();  if ($result !== FALSE) {     print_r($result); }
+	$result = $this->dbutil->optimize_database();
+	
+	if ($result !== FALSE)
+	{
+		print_r($result);
+	}
 
 .. note:: Not all database platforms support table optimization.
 
@@ -91,7 +110,11 @@
 parameter of the function must contain the result object from your
 query. Example::
 
-	 $this->load->dbutil();  $query = $this->db->query("SELECT * FROM mytable");  echo $this->dbutil->csv_from_result($query);
+	$this->load->dbutil();
+	
+	$query = $this->db->query("SELECT * FROM mytable");
+	
+	echo $this->dbutil->csv_from_result($query);
 
 The second, third, and fourth parameters allow you to set the delimiter
 newline, and enclosure characters respectively. By default tabs are
@@ -115,7 +138,18 @@
 parameter expects a query result object, the second may contain an
 optional array of config parameters. Example::
 
-	 $this->load->dbutil();  $query = $this->db->query("SELECT * FROM mytable");  $config = array (                   'root'    => 'root',                   'element' => 'element',                    'newline' => "\n",                    'tab'    => "\t"                 );  echo $this->dbutil->xml_from_result($query, $config);
+	$this->load->dbutil();
+	
+	$query = $this->db->query("SELECT * FROM mytable");
+	
+	$config = array (
+		'root'		=> 'root',
+		'element'	=> 'element',
+		'newline'	=> "\n",
+		'tab'		=> "\t" 
+	);
+	
+	echo $this->dbutil->xml_from_result($query, $config);
 
 .. important:: This function will NOT write the XML file for you. It
 	simply creates the XML layout. If you need to write the file
@@ -140,7 +174,19 @@
 
 ::
 
-	 // Load the DB utility class $this->load->dbutil();  // Backup your entire database and assign it to a variable $backup =& $this->dbutil->backup();   // Load the file helper and write the file to your server $this->load->helper('file'); write_file('/path/to/mybackup.gz', $backup);   // Load the download helper and send the file to your desktop $this->load->helper('download'); force_download('mybackup.gz', $backup);
+	// Load the DB utility class
+	$this->load->dbutil();
+	
+	// Backup your entire database and assign it to a variable
+	$backup =& $this->dbutil->backup();
+	
+	// Load the file helper and write the file to your server
+	$this->load->helper('file');
+	write_file('/path/to/mybackup.gz', $backup);
+	
+	// Load the download helper and send the file to your desktop
+	$this->load->helper('download');
+	force_download('mybackup.gz', $backup);
 
 Setting Backup Preferences
 --------------------------
@@ -148,42 +194,31 @@
 Backup preferences are set by submitting an array of values to the first
 parameter of the backup function. Example::
 
-	$prefs = array(                 'tables'      => array('table1', 'table2'),  // Array of tables to backup.                 'ignore'      => array(),           // List of tables to omit from the backup                 'format'      => 'txt',             // gzip, zip, txt                 'filename'    => 'mybackup.sql',    // File name - NEEDED ONLY WITH ZIP FILES                 'add_drop'    => TRUE,              // Whether to add DROP TABLE statements to backup file                 'add_insert'  => TRUE,              // Whether to add INSERT data to backup file                 'newline'     => "\n"               // Newline character used in backup file               );  $this->dbutil->backup($prefs);
+	$prefs = array(
+		'tables'		=> array('table1', 'table2'),	// Array of tables to backup.
+		'ignore'		=> array(),						// List of tables to omit from the backup
+		'format'		=> 'txt',						// gzip, zip, txt
+		'filename'		=> 'mybackup.sql',				// File name - NEEDED ONLY WITH ZIP FILES
+		'add_drop'		=> TRUE,						// Whether to add DROP TABLE statements to backup file
+		'add_insert'	=> TRUE,						// Whether to add INSERT data to backup file
+		'newline'		=> "\n"							// Newline character used in backup file
+	);
+	
+	$this->dbutil->backup($prefs);
 
 Description of Backup Preferences
 ---------------------------------
 
-Preference
-Default Value
-Options
-Description
-**tables**
-empty array
-None
-An array of tables you want backed up. If left blank all tables will be
-exported.
-**ignore**
-empty array
-None
-An array of tables you want the backup routine to ignore.
-**format**
-gzip
-gzip, zip, txt
-The file format of the export file.
-**filename**
-the current date/time
-None
-The name of the backed-up file. The name is needed only if you are using
-zip compression.
-**add_drop**
-TRUE
-TRUE/FALSE
-Whether to include DROP TABLE statements in your SQL export file.
-**add_insert**
-TRUE
-TRUE/FALSE
-Whether to include INSERT statements in your SQL export file.
-**newline**
-"\\n"
-"\\n", "\\r", "\\r\\n"
-Type of newline to use in your SQL export file.
+=============== ======================= ======================= ========================================================================
+Preference      Default Value           Options                 Description
+=============== ======================= ======================= ========================================================================
+**tables**      empty array             None                    An array of tables you want backed up. If left blank all tables will be
+                                                                exported.
+**ignore**      empty array             None                    An array of tables you want the backup routine to ignore.
+**format**      gzip                    gzip, zip, txt          The file format of the export file.
+**filename**    the current date/time   None                    The name of the backed-up file. The name is needed only if you are using
+                                                                zip compression.
+**add_drop**    TRUE                    TRUE/FALSE              Whether to include DROP TABLE statements in your SQL export file.
+**add_insert**  TRUE                    TRUE/FALSE              Whether to include INSERT statements in your SQL export file.
+**newline**     "\\n"                   "\\n", "\\r", "\\r\\n"  Type of newline to use in your SQL export file.
+=============== ======================= ======================= ========================================================================
\ No newline at end of file
diff --git a/user_guide_src/source/documentation/index.rst b/user_guide_src/source/documentation/index.rst
index d62920f..e977566 100644
--- a/user_guide_src/source/documentation/index.rst
+++ b/user_guide_src/source/documentation/index.rst
@@ -118,16 +118,16 @@
 		
 			::
 
-				$this->EE->load->library('some_class');
+				$this->load->library('some_class');
 
 				$bar = array(
 					'something'		=> 'Here is this parameter!',
 					'something_else'	=> 42
 				);
 
-				$bat = $this->EE->some_class->should_do_something();
+				$bat = $this->some_class->should_do_something();
 
-				if ($this->EE->some_class->some_method(4, $bar, $bat) === FALSE)
+				if ($this->some_class->some_method(4, $bar, $bat) === FALSE)
 				{
 					show_error('An Error Occurred Doing Some Method');
 				}
@@ -167,16 +167,16 @@
 		
 		::
 
-			$this->EE->load->library('some_class');
+			$this->load->library('some_class');
 
 			$bar = array(
 				'something'		=> 'Here is this parameter!',
 				'something_else'	=> 42
 			);
 
-			$bat = $this->EE->some_class->should_do_something();
+			$bat = $this->some_class->should_do_something();
 
-			if ($this->EE->some_class->some_method(4, $bar, $bat) === FALSE)
+			if ($this->some_class->some_method(4, $bar, $bat) === FALSE)
 			{
 				show_error('An Error Occurred Doing Some Method');
 			}
diff --git a/user_guide_src/source/general/cli.rst b/user_guide_src/source/general/cli.rst
index 8fcf317..7dc1ca3 100644
--- a/user_guide_src/source/general/cli.rst
+++ b/user_guide_src/source/general/cli.rst
@@ -6,9 +6,7 @@
 via the URL in a browser they can also be loaded via the command-line
 interface (CLI).
 
--  `What is the CLI? <#what>`_
--  `Why use this method? <#why>`_
--  `How does it work? <#how>`_
+.. contents:: Page Contents
 
 What is the CLI?
 ================
diff --git a/user_guide_src/source/general/controllers.rst b/user_guide_src/source/general/controllers.rst
index 4d6e836..6e50794 100644
--- a/user_guide_src/source/general/controllers.rst
+++ b/user_guide_src/source/general/controllers.rst
@@ -5,23 +5,13 @@
 Controllers are the heart of your application, as they determine how
 HTTP requests should be handled.
 
--  `What is a Controller? <#what>`_
--  `Hello World <#hello>`_
--  `Functions <#functions>`_
--  `Passing URI Segments to Your Functions <#passinguri>`_
--  `Defining a Default Controller <#default>`_
--  `Remapping Function Calls <#remapping>`_
--  `Controlling Output Data <#output>`_
--  `Private Functions <#private>`_
--  `Organizing Controllers into Sub-folders <#subfolders>`_
--  `Class Constructors <#constructors>`_
--  `Reserved Function Names <#reserved>`_
+.. contents:: Page Contents
 
 What is a Controller?
 =====================
 
-A Controller is simply a class file that is named in a way that can be
-associated with a URI.
+**A Controller is simply a class file that is named in a way that can be
+associated with a URI.**
 
 Consider this URI::
 
@@ -146,7 +136,7 @@
 
 CodeIgniter can be told to load a default controller when a URI is not
 present, as will be the case when only your site root URL is requested.
-To specify a default controller, open your application/config/routes.php
+To specify a default controller, open your **application/config/routes.php**
 file and set this variable::
 
 	$route['default_controller'] = 'Blog';
@@ -209,8 +199,7 @@
 
 CodeIgniter has an output class that takes care of sending your final
 rendered data to the web browser automatically. More information on this
-can be found in the :doc::doc:`Views <views>` and `Output
-class <../libraries/output>` pages. In some cases, however, you
+can be found in the :doc:`Views <views>` and :doc:`Output class <../libraries/output>` pages. In some cases, however, you
 might want to post-process the finalized data in some way and send it to
 the browser yourself. CodeIgniter permits you to add a function named
 _output() to your controller that will receive the finalized output
diff --git a/user_guide_src/source/general/models.rst b/user_guide_src/source/general/models.rst
index 55081d1..4dd3e57 100644
--- a/user_guide_src/source/general/models.rst
+++ b/user_guide_src/source/general/models.rst
@@ -5,11 +5,7 @@
 Models are **optionally** available for those who want to use a more
 traditional MVC approach.
 
--  `What is a Model? <#what>`_
--  `Anatomy of a Model <#anatomy>`_
--  `Loading a Model <#loading>`_
--  `Auto-Loading a Model <#auto_load_model>`_
--  `Connecting to your Database <#conn>`_
+.. contents:: Page Contents
 
 What is a Model?
 ================
diff --git a/user_guide_src/source/general/profiling.rst b/user_guide_src/source/general/profiling.rst
index 28c1dd7..4376352 100644
--- a/user_guide_src/source/general/profiling.rst
+++ b/user_guide_src/source/general/profiling.rst
@@ -65,40 +65,19 @@
 Available sections and the array key used to access them are described
 in the table below.
 
-Key
-Description
-Default
-**benchmarks**
-Elapsed time of Benchmark points and total execution time
-TRUE
-**config**
-CodeIgniter Config variables
-TRUE
-**controller_info**
-The Controller class and method requested
-TRUE
-**get**
-Any GET data passed in the request
-TRUE
-**http_headers**
-The HTTP headers for the current request
-TRUE
-**memory_usage**
-Amount of memory consumed by the current request, in bytes
-TRUE
-**post**
-Any POST data passed in the request
-TRUE
-**queries**
-Listing of all database queries executed, including execution time
-TRUE
-**uri_string**
-The URI of the current request
-TRUE
-**session_data**
-Data stored in the current session
-TRUE
-**query_toggle_count**
-The number of queries after which the query block will default to
-hidden.
-25
+======================= =================================================================== ========
+Key                     Description                                                         Default
+======================= =================================================================== ========
+**benchmarks**          Elapsed time of Benchmark points and total execution time           TRUE
+**config**              CodeIgniter Config variables                                        TRUE
+**controller_info**     The Controller class and method requested                           TRUE
+**get**                 Any GET data passed in the request                                  TRUE
+**http_headers**        The HTTP headers for the current request                            TRUE
+**memory_usage**        Amount of memory consumed by the current request, in bytes          TRUE
+**post**                Any POST data passed in the request                                 TRUE
+**queries**             Listing of all database queries executed, including execution time  TRUE
+**uri_string**          The URI of the current request                                      TRUE
+**session_data**        Data stored in the current session                                  TRUE
+**query_toggle_count**  The number of queries after which the query block will default to   25
+                        hidden.
+======================= =================================================================== ========
\ No newline at end of file
diff --git a/user_guide_src/source/general/urls.rst b/user_guide_src/source/general/urls.rst
index db1ffe5..2115376 100644
--- a/user_guide_src/source/general/urls.rst
+++ b/user_guide_src/source/general/urls.rst
@@ -28,8 +28,7 @@
 #. The third, and any additional segments, represent the ID and any
    variables that will be passed to the controller.
 
-The :doc::doc:`URI Class <../libraries/uri>` and the `URL
-Helper <../helpers/url_helper>` contain functions that make it
+The :doc:`URI Class <../libraries/uri>` and the :doc:`URL Helper <../helpers/url_helper>` contain functions that make it
 easy to work with your URI data. In addition, your URLs can be remapped
 using the :doc:`URI Routing <routing>` feature for more flexibility.
 
@@ -56,13 +55,13 @@
 Adding a URL Suffix
 ===================
 
-In your config/config.php file you can specify a suffix that will be
+In your **config/config.php** file you can specify a suffix that will be
 added to all URLs generated by CodeIgniter. For example, if a URL is
 this::
 
 	example.com/index.php/products/view/shoes
 
-You can optionally add a suffix, like .html, making the page appear to
+You can optionally add a suffix, like **.html,** making the page appear to
 be of a certain type::
 
 	example.com/index.php/products/view/shoes.html
@@ -75,7 +74,7 @@
 	index.php?c=products&m=view&id=345
 
 CodeIgniter optionally supports this capability, which can be enabled in
-your application/config.php file. If you open your config file you'll
+your **application/config.php** file. If you open your config file you'll
 see these items::
 
 	$config['enable_query_strings'] = FALSE;
@@ -88,7 +87,7 @@
 
 	index.php?c=controller&m=method
 
-..note:: If you are using query strings you will have to build
+.. note:: If you are using query strings you will have to build
 	your own URLs, rather than utilizing the URL helpers (and other helpers
 	that generate URLs, like some of the form helpers) as these are designed
 	to work with segment based URLs.
diff --git a/user_guide_src/source/general/views.rst b/user_guide_src/source/general/views.rst
index 7d0acca..dc65f6c 100644
--- a/user_guide_src/source/general/views.rst
+++ b/user_guide_src/source/general/views.rst
@@ -24,7 +24,7 @@
 
 	<html>
 	<head>
-	<title>My Blog</title>
+		<title>My Blog</title>
 	</head>
 	<body>
 		<h1>Welcome to my Blog!</h1>
@@ -141,7 +141,7 @@
 
 	<html>
 	<head>
-	<title><?php echo $title;?></title>
+		<title><?php echo $title;?></title>
 	</head>
 	<body>
 		<h1><?php echo $heading;?></h1>
@@ -180,27 +180,27 @@
 
 	<html>
 	<head>
-	<title><?php echo $title;?></title>
+		<title><?php echo $title;?></title>
 	</head>
 	<body>
-	<h1><?php echo $heading;?></h1>
+		<h1><?php echo $heading;?></h1>
+	
+		<h3>My Todo List</h3>
 
-	<h3>My Todo List</h3>
-
-	<ul>
-	<?php foreach ($todo_list as $item):?>
-
-	<li><?php echo $item;?></li>
-
-	<?php endforeach;?>
-	</ul>
+		<ul>
+		<?php foreach ($todo_list as $item):?>
+	
+			<li><?php echo $item;?></li>
+	
+		<?php endforeach;?>
+		</ul>
 
 	</body>
 	</html>
 
 .. note:: You'll notice that in the example above we are using PHP's
 	alternative syntax. If you are not familiar with it you can read about
-	it `here </general/alternative_php>`.
+	it :doc:`here </general/alternative_php>`.
 
 Returning views as data
 =======================
diff --git a/user_guide_src/source/libraries/encryption.rst b/user_guide_src/source/libraries/encryption.rst
index 356465b..80b45e4 100644
--- a/user_guide_src/source/libraries/encryption.rst
+++ b/user_guide_src/source/libraries/encryption.rst
@@ -31,11 +31,11 @@
 letters. Your key should **not** be a simple text string. In order to be
 cryptographically secure it needs to be as random as possible.
 
-Your key can be either stored in your application/config/config.php, or
+Your key can be either stored in your **application/config/config.php**, or
 you can design your own storage mechanism and pass the key dynamically
 when encoding/decoding.
 
-To save your key to your application/config/config.php, open the file
+To save your key to your **application/config/config.php**, open the file
 and set::
 
 	$config['encryption_key'] = "YOUR KEY";
@@ -57,7 +57,7 @@
 ======================
 
 Like most other classes in CodeIgniter, the Encryption class is
-initialized in your controller using the $this->load->library function::
+initialized in your controller using the **$this->load->library** function::
 
 	$this->load->library('encrypt');
 
@@ -103,7 +103,7 @@
 ==============================
 
 Permits you to set an Mcrypt cipher. By default it uses
-MCRYPT_RIJNDAEL_256. Example::
+**MCRYPT_RIJNDAEL_256**. Example::
 
 	$this->encrypt->set_cipher(MCRYPT_BLOWFISH);
 
@@ -118,7 +118,7 @@
 $this->encrypt->set_mode();
 ============================
 
-Permits you to set an Mcrypt mode. By default it uses MCRYPT_MODE_CBC.
+Permits you to set an Mcrypt mode. By default it uses **MCRYPT_MODE_CBC**.
 Example::
 
 	$this->encrypt->set_mode(MCRYPT_MODE_CFB);
@@ -153,31 +153,27 @@
 intervention on your part. However, existing encrypted Sessions will be
 destroyed since data encrypted prior to 2.x will not be decoded.
 
-..important:: **Why only a method to re-encode the data instead of maintaining legacy
-methods for both encoding and decoding?** The algorithms in the
-Encryption library have improved in CodeIgniter 2.x both for performance
-and security, and we do not wish to encourage continued use of the older
-methods. You can of course extend the Encryption library if you wish and
-replace the new methods with the old and retain seamless compatibility
-with CodeIgniter 1.x encrypted data, but this a decision that a
-developer should make cautiously and deliberately, if at all.
+.. important::
+	**Why only a method to re-encode the data instead of maintaining legacy
+	methods for both encoding and decoding?** The algorithms in the
+	Encryption library have improved in CodeIgniter 2.x both for performance
+	and security, and we do not wish to encourage continued use of the older
+	methods. You can of course extend the Encryption library if you wish and
+	replace the new methods with the old and retain seamless compatibility
+	with CodeIgniter 1.x encrypted data, but this a decision that a
+	developer should make cautiously and deliberately, if at all.
 
 ::
 
 	$new_data = $this->encrypt->encode_from_legacy($old_encrypted_string);
 
-Parameter
-Default
-Description
-**$orig_data**
-n/a
-The original encrypted data from CodeIgniter 1.x's Encryption library
-**$legacy_mode**
-MCRYPT_MODE_ECB
-The Mcrypt mode that was used to generate the original encrypted data.
-CodeIgniter 1.x's default was MCRYPT_MODE_ECB, and it will assume that
-to be the case unless overridden by this parameter.
-**$key**
-n/a
-The encryption key. This it typically specified in your config file as
-outlined above.
+======================	===============	 =======================================================================
+Parameter		 Default	  Description
+======================	===============  =======================================================================
+**$orig_data**		n/a 		 The original encrypted data from CodeIgniter 1.x's Encryption library
+**$legacy_mode**	MCRYPT_MODE_ECB	 The Mcrypt mode that was used to generate the original encrypted data.
+					 CodeIgniter 1.x's default was MCRYPT_MODE_ECB, and it will assume that
+					 to be the case unless overridden by this parameter.
+**$key**		n/a 		 The encryption key. This it typically specified in your config file as
+					 outlined above.
+======================	===============	 =======================================================================
\ No newline at end of file
diff --git a/user_guide_src/source/libraries/form_validation.rst b/user_guide_src/source/libraries/form_validation.rst
index 7f5ba86..53293ca 100644
--- a/user_guide_src/source/libraries/form_validation.rst
+++ b/user_guide_src/source/libraries/form_validation.rst
@@ -5,31 +5,7 @@
 CodeIgniter provides a comprehensive form validation and data prepping
 class that helps minimize the amount of code you'll write.
 
--  `Overview <#overview>`_
--  `Form Validation Tutorial <#tutorial>`_
-
-   -  `The Form <#theform>`_
-   -  `The Success Page <#thesuccesspage>`_
-   -  `The Controller <#thecontroller>`_
-   -  `Setting Validation Rules <#validationrules>`_
-   -  `Setting Validation Rules Using an
-      Array <#validationrulesasarray>`_
-   -  `Cascading Rules <#cascadingrules>`_
-   -  `Prepping Data <#preppingdata>`_
-   -  `Re-populating the Form <#repopulatingform>`_
-   -  `Callbacks <#callbacks>`_
-   -  `Setting Error Messages <#settingerrors>`_
-   -  `Changing the Error Delimiters <#errordelimiters>`_
-   -  `Translating Field Names <#translatingfn>`_
-   -  `Showing Errors Individually <#individualerrors>`_
-   -  `Saving Sets of Validation Rules to a Config
-      File <#savingtoconfig>`_
-   -  `Using Arrays as Field Names <#arraysasfields>`_
-
--  `Rule Reference <#rulereference>`_
--  `Prepping Reference <#preppingreference>`_
--  `Function Reference <#functionreference>`_
--  `Helper Reference <#helperreference>`_
+.. contents:: Page Contents
 
 ********
 Overview
@@ -206,6 +182,8 @@
 Based on whether the validation was successful it either presents the
 form or the success page.
 
+.. _setting-validation-rules:
+
 Setting Validation Rules
 ========================
 
@@ -225,8 +203,7 @@
 #. The validation rules for this form field.
 
 .. note:: If you would like the field
-	name to be stored in a language file, please see `Translating Field
-	Names <#translatingfn>`_.
+	name to be stored in a language file, please see :ref:`translating-field-names`.
 
 Here is an example. In your controller (form.php), add this code just
 below the validation initialization function::
@@ -400,7 +377,7 @@
 Now reload your page and submit the form so that it triggers an error.
 Your form fields should now be re-populated
 
-.. note:: The `Function Reference <#functionreference>`_ section below
+.. note:: The :ref:`function-reference` section below
 	contains functions that permit you to re-populate <select> menus, radio
 	buttons, and checkboxes.
 
@@ -409,8 +386,7 @@
 
 	<input type="text" name="colors[]" value="<?php echo set_value('colors[]'); ?>" size="50" />
 
-For more info please see the `Using Arrays as Field
-Names <#arraysasfields>`_ section below.
+For more info please see the :ref:`using-arrays-as-field-names` section below.
 
 Callbacks: Your own Validation Functions
 ========================================
@@ -484,6 +460,8 @@
 	boolean TRUE/FALSE it is assumed that the data is your newly processed
 	form data.
 
+.. _setting-error-messages:
+
 Setting Error Messages
 ======================
 
@@ -511,6 +489,8 @@
 
 	$this->form_validation->set_message('required', 'Your custom message here');
 
+.. _translating-field-names:
+
 Translating Field Names
 =======================
 
@@ -536,6 +516,8 @@
 See the :doc:`Language Class <language>` page for more info regarding
 language files.
 
+.. _changing-delimiters:
+
 Changing the Error Delimiters
 =============================
 
@@ -595,8 +577,9 @@
 	<?php echo form_error('options[size]'); ?>
 	<input type="text" name="options[size]" value="<?php echo set_value("options[size]"); ?>" size="50" />
 
-For more info please see the `Using Arrays as Field
-Names <#arraysasfields>`_ section below.
+For more info please see the :ref:`using-arrays-as-field-names` section below.
+
+.. _saving-groups:
 
 ************************************************
 Saving Sets of Validation Rules to a Config File
@@ -774,6 +757,8 @@
 will be used automatically when the run() function is invoked from that
 class/function.
 
+.. _using-arrays-as-field-names:
+
 ***************************
 Using Arrays as Field Names
 ***************************
@@ -784,7 +769,7 @@
 	<input type="text" name="options[]" value="" size="50" />
 
 If you do use an array as a field name, you must use the EXACT array
-name in the `Helper Functions <#helperreference>`_ that require the
+name in the :ref:`Helper Functions <helper-functions>` that require the
 field name, and as your Validation Rule field name.
 
 For example, to set a rule for the above field you would use::
@@ -888,7 +873,7 @@
 ==================== ========= ===================================================================================================
 **xss_clean**        No        Runs the data through the XSS filtering function, described in the :doc:`Input Class <input>` page.
 **prep_for_form**    No        Converts special characters so that HTML data can be shown in a form field without breaking it.
-**prep_url**         No        Adds "http://" to URLs if missing.
+**prep_url**         No        Adds "\http://" to URLs if missing.
 **strip_image_tags** No        Strips the HTML from image tags leaving the raw URL.
 **encode_php_tags**  No        Converts PHP tags to entities.
 ==================== ========= ===================================================================================================
@@ -896,36 +881,57 @@
 .. note:: You can also use any native PHP functions that permit one
 	parameter, like trim, htmlspecialchars, urldecode, etc.
 
+.. _function-reference:
+
 ******************
 Function Reference
 ******************
 
+.. php:class:: Form_validation
+
 The following functions are intended for use in your controller
 functions.
 
 $this->form_validation->set_rules();
 ======================================
 
-Permits you to set validation rules, as described in the tutorial
-sections above:
+	.. php:method:: set_rules ($field, $label = '', $rules = '')
 
--  `Setting Validation Rules <#validationrules>`_
--  `Saving Groups of Validation Rules to a Config
-   File <#savingtoconfig>`_
+		:param string $field: The field name
+		:param string $label: The field label
+		:param string $rules: The rules, seperated by a pipe "|"
+		:rtype: Object
+	
+		Permits you to set validation rules, as described in the tutorial
+		sections above:
+
+	-  :ref:`setting-validation-rules`
+	-  :ref:`saving-groups`
 
 $this->form_validation->run();
 ===============================
+	
+	.. php:method:: run ($group = '')
 
-Runs the validation routines. Returns boolean TRUE on success and FALSE
-on failure. You can optionally pass the name of the validation group via
-the function, as described in: `Saving Groups of Validation Rules to a
-Config File <#savingtoconfig>`_.
+		:param string $group: The name of the validation group to run
+		:rtype: Boolean
+	
+		Runs the validation routines. Returns boolean TRUE on success and FALSE
+		on failure. You can optionally pass the name of the validation group via
+		the function, as described in: :ref:`saving-groups`
 
 $this->form_validation->set_message();
 ========================================
+	
+	.. php:method:: set_message ($lang, $val = '')
 
-Permits you to set custom error messages. See `Setting Error
-Messages <#settingerrors>`_ above.
+		:param string $lang: The rule the message is for
+		:param string $val: The message
+		:rtype: Object
+
+		Permits you to set custom error messages. See :ref:`setting-error-messages`
+
+.. _helper-functions:
 
 ****************
 Helper Reference
@@ -943,8 +949,8 @@
 
 	<?php echo form_error('username'); ?>
 
-The error delimiters can be optionally specified. See the `Changing the
-Error Delimiters <#errordelimiters>`_ section above.
+The error delimiters can be optionally specified. See the
+:ref:`changing-delimiters` section above.
 
 validation_errors()
 ====================
@@ -953,8 +959,8 @@
 
 	<?php echo validation_errors(); ?>
 
-The error delimiters can be optionally specified. See the `Changing the
-Error Delimiters <#errordelimiters>`_ section above.
+The error delimiters can be optionally specified. See the 
+:ref:`changing-delimiters` section above.
 
 set_value()
 ============
diff --git a/user_guide_src/source/libraries/sessions.rst b/user_guide_src/source/libraries/sessions.rst
index af9dd49..ef32f5d 100644
--- a/user_guide_src/source/libraries/sessions.rst
+++ b/user_guide_src/source/libraries/sessions.rst
@@ -284,50 +284,23 @@
 You'll find the following Session related preferences in your
 application/config/config.php file:
 
-Preference
-Default
-Options
-Description
-**sess_cookie_name**
-ci_session
-None
-The name you want the session cookie saved as.
-**sess_expiration**
-7200
-None
-The number of seconds you would like the session to last. The default
-value is 2 hours (7200 seconds). If you would like a non-expiring
-session set the value to zero: 0
-**sess_expire_on_close**
-FALSE
-TRUE/FALSE (boolean)
-Whether to cause the session to expire automatically when the browser
-window is closed.
-**sess_encrypt_cookie**
-FALSE
-TRUE/FALSE (boolean)
-Whether to encrypt the session data.
-**sess_use_database**
-FALSE
-TRUE/FALSE (boolean)
-Whether to save the session data to a database. You must create the
-table before enabling this option.
-**sess_table_name**
-ci_sessions
-Any valid SQL table name
-The name of the session database table.
-**sess_time_to_update**
-300
-Time in seconds
-This options controls how often the session class will regenerate itself
-and create a new session id.
-**sess_match_ip**
-FALSE
-TRUE/FALSE (boolean)
-Whether to match the user's IP address when reading the session data.
-Note that some ISPs dynamically changes the IP, so if you want a
-non-expiring session you will likely set this to FALSE.
-**sess_match_useragent**
-TRUE
-TRUE/FALSE (boolean)
-Whether to match the User Agent when reading the session data.
+=========================== =============== =========================== ==========================================================================
+Preference                  Default         Options                     Description
+=========================== =============== =========================== ==========================================================================
+**sess_cookie_name**        ci_session      None                        The name you want the session cookie saved as.
+**sess_expiration**         7200            None                        The number of seconds you would like the session to last. The default
+                                                                        value is 2 hours (7200 seconds). If you would like a non-expiring
+                                                                        session set the value to zero: 0
+**sess_expire_on_close**    FALSE           TRUE/FALSE (boolean)        Whether to cause the session to expire automatically when the browser
+                                                                        window is closed.
+**sess_encrypt_cookie**     FALSE           TRUE/FALSE (boolean)        Whether to encrypt the session data.
+**sess_use_database**       FALSE           TRUE/FALSE (boolean)        Whether to save the session data to a database. You must create the
+                                                                        table before enabling this option.
+**sess_table_name**         ci_sessions     Any valid SQL table name    The name of the session database table.
+**sess_time_to_update**     300             Time in seconds             This options controls how often the session class will regenerate itself
+                                                                        and create a new session id.
+**sess_match_ip**           FALSE           TRUE/FALSE (boolean)        Whether to match the user's IP address when reading the session data.
+                                                                        Note that some ISPs dynamically changes the IP, so if you want a
+                                                                        non-expiring session you will likely set this to FALSE.
+**sess_match_useragent**    TRUE            TRUE/FALSE (boolean)        Whether to match the User Agent when reading the session data.
+=========================== =============== =========================== ==========================================================================
\ No newline at end of file
